package com.hdj.chapter14;

/**
 * @description 模板方法模式（Template Method）
 * @author hdj
 * @date 2017/12/14.
 */
public abstract class AbstractCalculator {

    /**
     * 公共实现
     */
    public final int calculate(String exp,String opt){
        int array[] = split(exp,opt);
        return calc(array[0],array[1]);
    }

    public int[] split(String exp,String opt){
        String array[] = exp.split(opt);
        int arrayInt[] = new int[2];
        arrayInt[0] = Integer.parseInt(array[0]);
        arrayInt[1] = Integer.parseInt(array[1]);
        return arrayInt;
    }

    /**
     * 个性化实现
     * @param num1
     * @param num2
     * @return
     */
    abstract public int calc(int num1, int num2);
}
